package com.zn.asycn;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.Iterator;
import java.util.List;

/**
 * @author YinJiaWei
 * @version 2018/12/14 14:18
 */
public class AnalysisXml {
    public static void main(String[] args) {
        try {
            handleXml2();
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    public static void handleXml() throws Exception{
     /*   // 创建saxReader对象
        SAXReader reader = new SAXReader();
        // 通过read方法读取一个文件 转换成Document对象
        Document document = reader.read(new File("D:\\znCode\\error.xml"));
        //获取根节点元素对象
        Element node = document.getRootElement();
        //遍历所有的元素节点
         listNodes(node);
        // elementMethod(node);*/

    }


    public static void handleXml2() throws Exception{
        SAXReader saxReader = new SAXReader();

        Document document = saxReader.read(new File("D:\\znCode\\error.xml"));

        // 获取根元素
        Element root = document.getRootElement();
        System.out.println("Root: " + root.getName());

        // 获取所有子元素
        List<Element> childList = root.elements();
        System.out.println("total child count: " + childList.size());

        // 获取特定名称的子元素
        List<Element> childList2 = root.elements("error");
        System.out.println("hello child: " + childList2.size());

        // 获取名字为指定名称的第一个子元素
        Element firstWorldElement = root.element("error");
        // 输出其属性
        System.out.println("first World Attr: "
                + firstWorldElement.attribute(0).getName() + "="
                + firstWorldElement.attributeValue("value"));

        System.out.println("迭代输出-----------------------");
        // 迭代输出
        for (Iterator iter = root.elementIterator(); iter.hasNext();)
        {
            Element e = (Element) iter.next();
            //case "16":msg="CTP:找不到合约";break;
            System.out.println("case \""+e.attributeValue("value")+"\": msg=\""+e.attributeValue("prompt")+"\";break;");

        }

    }

    public static void listNodes(Element node) {
       /* System.out.println("当前节点的名称：：" + node.getName());
        // 获取当前节点的所有属性节点
        List<Attribute> list = node.attributes();
        // 遍历属性节点
        for (Attribute attr : list) {
            System.out.println(attr.getText() + "-----" + attr.getName() + "---" + attr.getValue());
        }
        if (!(node.getTextTrim().equals(""))) {
            System.out.println("文本内容：：：：" + node.getText());
        }
        // 当前节点下面子节点迭代器
         Iterator<Element> it = node.elementIterator();
        // 遍历
        while (it.hasNext()) {
            // 获取某个子节点对象
            Element e = it.next();
            // 对子节点进行遍历
             listNodes(e);
        }*/
    }

}
